package com.tiancheng.trade.settlement.model.settlement;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.tiancheng.trade.settlement.model.base.BaseEntity;
import lombok.Data;

import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 清分规则
 *
 * @Desc
 * @Time 2024-03-26 10:14
 * @GeneratedByCodeFactory
 */
@Data
@TableName("settlement_rule")
public class SettlementRule extends BaseEntity {

    /**
     * 商户编号
     */
    @NotNull
    @JsonProperty("merchant_code")
    private String merchantCode;

    /**
     * 商户名称
     */
    @NotNull
    @JsonProperty("merchant_name")
    private String merchantName;

    /**
     * 产品编号
     */
    @NotNull
    @JsonProperty("product_code")
    private String productCode;

    /**
     * 产品名称
     */
    @NotNull
    @JsonProperty("product_name")
    private String productName;

    /**
     * 业务侧产品编号
     */
    @JsonProperty("product_code_business")
    private String productCodeBusiness;

    /**
     * 规则编号
     */
    @NotNull
    @JsonProperty("rule_code")
    private String ruleCode;

    /**
     * 规则类型
     */
    @NotNull
    @JsonProperty("rule_type")
    private String ruleType;

    @TableField(exist = false)
    @JsonProperty("rule_type_cn")
    private String ruleTypeCn;

    /**
     * 规则名称
     */
    @NotNull
    @JsonProperty("rule_name")
    private String ruleName;

    /**
     * 结算类型:清分/结算
     */
    @NotNull
    @JsonProperty("settlement_type")
    private String settlementType;

    @TableField(exist = false)
    @JsonProperty("settlement_type_cn")
    private String settlementTypeCn;

    /**
     * 结算状态(1:待生效，2:已生效，3:已失效，4:作废)
     */
    @JsonProperty("settlement_status")
    private String settlementStatus;

    @TableField(exist = false)
    @JsonProperty("settlement_status_cn")
    private String settlementStatusCn;

    /**
     * 产品单价
     */
    @JsonProperty("product_price")
    private String productPrice;

    /**
     * 清分周期类型
     */
    @JsonProperty("clearing_cycle_mode")
    private String clearingCycleMode;

    /**
     * 清分周期值
     */
    @JsonProperty("clearing_cycle_value")
    private Integer clearingCycleValue;

    /**
     * 清分周期扩展值
     */
    @JsonProperty("clearing_cycle_value_ext")
    private Integer clearingCycleValueExt;

    /**
     * 清分规则
     */
    @NotNull
    @JsonProperty("clearing_rule")
    private String clearingRule;

    @TableField(exist = false)
    @JsonProperty("clearing_rule_cn")
    private String clearingRuleCn;

    /**
     * 清分-平台应收
     */
    @TableField(exist = false)
    @JsonProperty("platform_receivable")
    private String platformReceivable;

    /**
     * 清分-商户应收
     */
    @TableField(exist = false)
    @JsonProperty("merchant_receivable")
    private String merchantReceivable;

    /**
     * 清分-平台应收-百分比
     */
    @JsonProperty("platform_pre")
    private BigDecimal platformPre;

    /**
     * 清分-商户应收-百分比
     */
    @JsonProperty("merchant_pre")
    private BigDecimal merchantPre;

    /**
     * 清分-平台应收-固定金额
     */
    @JsonProperty("platform_fix")
    private Integer platformFix;

    /**
     * 清分-商户应收-固定金额'
     */
    @JsonProperty("merchant_fix")
    private Integer merchantFix;

    /**
     * 线下结算规则
     */
    @JsonProperty("line_clearing_rule")
    private String lineClearingRule;

    @TableField(exist = false)
    @JsonProperty("line_clearing_rule_cn")
    private String lineClearingRuleCn;

    /**
     * 线下-平台应收
     */
    @TableField(exist = false)
    @JsonProperty("line_platform_receivable")
    private String linePlatformReceivable;

    /**
     * 线下-商户应收
     */
    @TableField(exist = false)
    @JsonProperty("line_merchant_receivable")
    private String lineMerchantReceivable;

    /**
     * 线下-平台应收-百分比
     */
    @JsonProperty("line_platform_pre")
    private BigDecimal linePlatformPre;

    /**
     * 线下-商户应收-百分比
     */
    @JsonProperty("line_merchant_pre")
    private BigDecimal lineMerchantPre;

    /**
     * 线下-平台应收-固定金额
     */
    @JsonProperty("line_platform_fix")
    private Integer linePlatformFix;

    /**
     * 线下-商户应收-固定金额
     */
    @JsonProperty("line_merchant_fix")
    private Integer lineMerchantFix;

    /**
     * 规则生效时间
     */
    @JsonProperty("effective_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate effectiveDate;

    /**
     * 规则失效时间
     */
    @JsonProperty("expire_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate expireDate;

    /**
     * 优先级
     */
    @JsonProperty("priority_level")
    private Integer priorityLevel;

    /**
     * 是否删除
     */
    @JsonProperty("is_delete")
    private Integer isDelete;


}